package com.bizmerce.rnd.oms.decision.criterion.relax;

import java.util.List;

import com.bizmerce.rnd.oms.decision.criterion.Criterion;
import com.bizmerce.rnd.oms.decision.data.BillOfMaterials;
import com.bizmerce.rnd.oms.decision.data.RawMaterial;

/**
 * 비원산지중 세번변경기준에 포함되지 않은 것만 체크한다.
 * @author Gyeseon
 *
 */
public class DeMinimis implements Criterion {

	public Boolean assign(BillOfMaterials bom) {
		boolean result = false;
		List<RawMaterial> materials = bom.getRawMaterials();
		double materialTotalPrice = 0d;
		for (RawMaterial material : materials) {
			
			//역외산으로 인정된 품목의 가격을 모두 합산한다.
			if(material.isNotIntraItem()) {
				materialTotalPrice += material.getPurchasePrice();	
			}
		}
		double totalPrice = bom.getSalePrice();
		// 10% 이하 충족기준은 각 협정별로 다를 수 있음
		if(Math.floor(materialTotalPrice / totalPrice * 100) <= 10) {
			result = true;
		}
		return result;
	}

	public void addRelaxRule(Criterion relaxRule) {
		throw new UnsupportedOperationException("지원하지 않는 메소드입니다.");
	}
}
